namespace CSharpPro._1028;
using System;
using System.Collections.Generic;
using System.Linq;

/// <summary>
/// 用户服务实现类
/// </summary>
public class UserServiceImpl : IUserService
{
    // 泛型集合保存注册用户信息
    private readonly List<User> _users = new List<User>();

    // 注册用户（验证用户名唯一）
    public bool Register(User user)
    {
        if (user == null)
        {
            Console.WriteLine("注册失败：用户对象不能为空");
            return false;
        }

        // 检查用户名是否已存在
        if (_users.Any(u => u.Username == user.Username))
        {
            Console.WriteLine($"注册失败：用户名「{user.Username}」已存在");
            return false;
        }

        _users.Add(user);
        Console.WriteLine($"注册成功：用户名「{user.Username}」");
        return true;
    }

    // 用户登录（验证用户名和密码）
    public bool Login(string username, string password)
    {
        var user = _users.FirstOrDefault(u => u.Username == username);
        if (user == null)
        {
            Console.WriteLine($"登录失败：用户名「{username}」不存在");
            return false;
        }

        if (user.Password != password)
        {
            Console.WriteLine("登录失败：密码错误");
            return false;
        }

        Console.WriteLine($"登录成功：欢迎「{username}」");
        return true;
    }

    // 获取所有用户（返回泛型集合）
    public List<User> GetAllUsers()
    {
        return new List<User>(_users); // 返回副本，避免外部修改内部集合
    }

    // 显示所有用户（foreach遍历）
    public void ShowAllUsers()
    {
        if (_users.Count == 0)
        {
            Console.WriteLine("当前无注册用户");
            return;
        }

        Console.WriteLine("=== 所有注册用户 ===");
        // 使用foreach循环迭代数据
        foreach (var user in _users)
        {
            Console.WriteLine($"用户名：{user.Username}，邮箱：{user.Email}");
        }
    }
}